не именно пехотинец а вообще любой герой который применяет этот приказ.
это так сказать модификатор атаки будет. мне нужен скил который включается и отключается.
Я уже использовал скилы - Жар преиспобней и Щита маны.
У одного героя может быть 3 модификатора атаки сразу
ты знаешь начальные хп декораций
ты можешь отловить факт приказа добывать дерево и OrderTargetDestructable
ты можешь перезаписывать этот триггер каждый раз, как юнит получает новый приказ, хотя хз, как оно себя ведет при смене дерева
нормального способа задетектить урон по не-юнитам нет
Да сделай проще. Создай многоуровневую способность-пустышку. и когда отдаешь приказ атаковать в область, давай ему эту способность и с помощью неё отслеживай, какую область атаковать.
Например,
способность уровень 1, значит атаковать должен 1 область.
Уровень 2 - 2 область и т. д.
Не вижу смысла усложнять жизнь с хеш-таблицей.
Надеюсь понятно?) Отдал приказ, присвоил способность, после каста жди пару сек и в зависимости от уровня способности-пустышки отправляй в ту или иную область.
Этого никто не знает. У меня вот ИИ-боты сами новые предметы не могут купить, пока не положишь. Некоторые даже не принимает и продает/выбрасывает (оказывается есть типы итемов, и итемы, которые сделаны на этой основе, ИИ заставляет продавать. Брал другой подходящий тип, который бот не продаст, и им же заменял, или на его основе создавал новый).
не пробовали на триггерах ИИ написать. Это правда может быть сложнее. Щас пробую со системой строительства намутить, пробую полную ветку здании строить. Сами строят. Можно даже отойти чай пить, пока ваши юниты строят. Со строительством может и прокатит, а вот с войсками? Там трудного ничего нет. Нанял, накопил войско. Мне пока не хватает знании, так как классический вар мало играю. Не знаю каких юнитов нужно нанимать и в каких количества, там порядок. В битве какие заклинания применять и прочее? Это оказалось сложнее, много всего
ну вот в чём твоя ошибка: Ты изменил название текстуры, а значит ты изменил и пути, тебе нужно зайти в war3modelEditor и там уже открыв модель выбрать вкладку: Windows=>Texture Manager, где будет список текстур, ты удаляешь 1 старую текстуру, которая у тебя была и добавляешь новую, при этом модель с текстурой должны лежать в одной папке, которая не содержит кириллицы (например путь должен быть d:\Users\User\Desktop\moroz - без русских букв ).
Переименовать новую текстуру на старую по идее не имеет смысла, потому что опять же ты сохранил её без текстуры, а => испоганил, накосячил, сломал (называй как хочешь).
Попробуй конвертировать через war3 image extracror, а в фш сохрани картинку как 32 битную. Ну и разумеется разрешение 512х512
Когда будешь вставлять в карту, закинь картинку в мапу , а еще тебе понадобится LoadScreen.mds. В свойствах карты на загрузочный экран установишь LoadScreen.mdx, ну это я так, на всякий случай. Саму картинку нужно назвать FullScreen.blp
Danil64, я про синий фон в диалоговом окне и меню. И нет, это не оно, ведь написано "human-transport-slot" и хочется ответить цитатой из криминального чтива. А тот самый синий фон у альянса находится по адресу UI\Widgets\EscMenu\Human\human-options-menu-background
В функции main по умолчанию есть вызов стандартной функции InitBlizzard, в которой есть вызов функции InitSummonableCaps.
function InitSummonableCaps takes nothing returns nothing
local integer index
set index = 0
loop
// upgraded units
// Note: Only do this if the corresponding upgrade is not yet researched
// Barrage - Siege Engines
if (not GetPlayerTechResearched(Player(index), 'Rhrt', true)) then
call SetPlayerTechMaxAllowed(Player(index), 'hrtt', 0)
endif
// Berserker Upgrade - Troll Berserkers
if (not GetPlayerTechResearched(Player(index), 'Robk', true)) then
call SetPlayerTechMaxAllowed(Player(index), 'otbk', 0)
endif
// max skeletons per player
call SetPlayerTechMaxAllowed(Player(index), 'uske', bj_MAX_SKELETONS)
set index = index + 1
exitwhen index == bj_MAX_PLAYERS
endloop
endfunction
Тут выставляется лимит на обычных скелетов, убираются иконки парового танка и берсерка.
Перед выполнением InitBlizzard выполняются все функции, что генерируются в настройках игроков, для этого в InitSummonableCaps стоят проверки.
А вот интересно, когда делаешь грейд на берсерков, то в бараке нанимаешь троллей или берсерков?
Достаточно взглянуть на грейд и становится ясно, что нанимаешь сразу берсерков.
Решение вопроса такое.
1. Во время инициализации ставим для всех игроков (как в функции InitSummonableCaps) разрешаемое кол-во рыцарей на 0.
2. Один триггер регистрирует появление алтаря на карте.
С: Юнит входит в область Вся карта
У: Тип Triggering unit равно Алтарь
Д: Поставить лимит на производство Рыцарь в -1 для Игрока-владельца Triggering Unit
3. Другой триггер регистрирует смерть алтаря.
С: Юнит умирает
У: Тип Умирающий юнит равно Алтарь
Д: Выбрать всех юнитов в группе (Юниты Игрока-владельца Умирающего юнита с условием (Тип Matching unit равно Алтарь))
Если первый юнит в последней созданной группе равно Нет юнита то (Поставить лимит на производство Рыцарь в 0 для Игрока-владельца
Умирающего юнита)
Уничтожить последнюю созданную группу.
Причина: причин было много, а я искал лишь одну
Самыми распространёнными оказались элементарные ошибки в коде, отсутствие параметров, параметры не того типа данных (привет динамическая типизация) или лишние параметры, из за чего происходили "рандомные рассинхроны при обрыве потока"
Огромное спасибо пользователю prog, что откликнулся и смог найти ошибки, а нашёл он их при помощи языкового сервера sumneko lua для VScode
War3Modeleditor через просмотр MPQ архивов по папкам ищеш путь к тайлсету записываеш себе в блокнотике и потом пишеш такой же путь у своей текстуры в редакторе.
|r не убирает а просто означает конец строки которвый вызвалии ранее цвета что вы можете делать цветные название |c[00][00][00][00]Привет|r
1 - это прозрачность
2,3,4 это цвет hex из 2 символов
И под конец цвет завершаем окраску со словом r
Пушистый, я пытаюсь локальной переменной присвоить значение глобальной переменной типа Способность и пишет: Cannot convert integer to ability
local ability s
set udg_BuferAbility=GetSpellAbilityId()
set s=udg_BuferAbility
Никак и не на что не влияет глобально, но.. но например хп и мана имеют дробный ренег, типа 0.1, у атаки же таких значение не бывает и поэтому она сразу целая
Вот я тоже интересовался этим, но у меня проблема наоборот в отображении нужных элементов. Когда скрываешь основной интерфейс, исчезает все! Остается лишь панель управления, если применить :
То исчезает и панель управления
После всего этого пытался отобразить кнопки Меню, Логи, Союзники и Задания по отдельности с помощью
set ppp=BlzGetOriginFrame(ORIGIN_FRAME_SYSTEM_BUTTON,0)
call BlzFrameSetVisible(ppp,true)
Но оно не отображало...затем попробовал
set ppp=BlzGetFrameByName("UpperButtonBarMenuButton",0)
call BlzFrameSetVisible(ppp,true)
И оно отобразило все четыре элемента меню, но мне это не надо...
Почему нельзя просто убрать все эти противные рамочки-картиночки и оставить/удалить/переместить все как надо, почему опять все через одно место...
Либо я дурак, либо это все кривое...Уже 2 день сижу и пытаюсь сделать одно и то же и все через одно место, то одно то другое...короче я х3
Скачай какой-нибудь нестандартный интерфейс, там указаны пути импортирования файлов. Причём указаны для замены у определённой расы - human, orc, undead, nightelf.
Если же хочешь свой создать, то с помощью соответствующих графических программ сохрани эти blp, как png, внеси изменения, потом опять сохрани в blp.
Сам задал, сам ответил.
call BlzFrameSetParent выручает ситуацию, т.е. устанавливаешь предка, который не скрыт(любой созданный через blzCreateFrame, и к нему вешаешь.
Причина: причин было много, а я искал лишь одну
Самыми распространёнными оказались элементарные ошибки в коде, отсутствие параметров, параметры не того типа данных (привет динамическая типизация) или лишние параметры, из за чего происходили "рандомные рассинхроны при обрыве потока"
Огромное спасибо пользователю prog, что откликнулся и смог найти ошибки, а нашёл он их при помощи языкового сервера sumneko lua для VScode
Что бы сделать каст огненного столба, необходимо создавать вспомогательного юнита, давать ему способность огненный столб и уже вновь созданному скрытому юниту со способностью москиты давать приказ применять огненный столб. Выше описали в какую сторону копать.
P.S. где то на форуме есть архив карт с кучей примеров разного рода фич. Если найду то скину ссылку.
upd.
не надо удалять war3imported\ надо правильно прописывать путь текстур, у каждой модели есть файлик ридми, и в нем написано по какому пути должны лежать текстуры напритмер ты импортнул модель и текстуру и у тебя получился путь war3imported\ 1.blp а в ридми написано textures\1.blp или просто 1.BLP правишь путь именно так как написано.
а если вдруг нету файлика ридми то модель всегда можно открыть блокном ----> поиск текста "blp" и тебе подстветиться среди символов строка как надо прописать текстуры
Для каждого дерева нужны три модели: обычная, неактивная (с названием Doodads\Terrain\AshenTree\AshenTree0S.mdx, например) и неактивная разрушенная (Doodads\Terrain\AshenTree\AshenTree0D.mdx). У неактивных моделей должна быть только одна анимация — Stand. У первой — только деревце, у второй — только пенёк, соответственно.
Когда с деревом никто не взаимодействует, отображаются неактивные модели. Ты их не заменил, потому такая вот фигня.
Как сделать полноценно работающие деревья с моделями, не заменяющими стандартные, я не знаю. Возможно, никак.
Первый коммент на английском и написано что модель не работает, я проверил в обоих редакторах WE: рефордж и 126 - НЕ РАБОТАЕТ. проверил в вар3ме и мдлвисе - модель РАБОТАЕТ. Так что скорее всего ты всё делал правильно...
Изначально было как обычно, через множество групп с нужной выборкой и их очистку. Но было падение фпса, спустя определенное время игры. С помощью счетчика хендлов выяснили что "Pick every unit in" вызывает утечки. Был предложен такой вот метод выбора всех юнитов через локалку и с помощью ifthenelse отсеивать нужных. В принципе помогло с фпсом. Он стабильный. Но вот видимо все эти переборы вызывают микрофризы.
А утечки точно из-за самого выбора? Насколько знаю, нативные функции утечек не вызывают, а BJ реализация ForGroup вроде без утечек...
Мб дело в обработке группы было?
И на счёт групп - пробовали выделить заранее штук сто-двести глобальных групп и использовать по необходимости? Без создания новых.
Кстати, GetUnitsInRangeOfLocMatching() вроде вызывает утечку. Это получение группы юнитов, находящихся внутри окружности с радиусом и подходящих по условию. Утечка в том, что возвращается локальная переменная. Лечится как раз использованием глобальной переменной. (Глобальной переменной присваивается значение локальной, локальная обнуляется, глобальная возвращается) Venommm:
Если такой способ действительно эффективней, можно пожалуйста самый элементарный пример, хотябы в виде скрина.
Вам ну гуи, да? По моему, на гуи так не получится. Насколько помню, GroupEnumUnitsInRange() и ForGroup() нет в действиях, а аналоги утечны. Но я могу и ошибаться, сужу по коду в Blizzard.j, а не по тестам.
Происходящее здесь напомнило мне один случай из моего далекого прошлого. В те времена я еще только начинал осваивать редактор. Одна из тем, которая меня заинтересовала и по которой мне не удалось найти достаточно полной информации - утечки. Тогда я пошел на один форум и задал простой вопрос о том, как определить наличие и степень серьезности утечек в карте, не перебирая весь код. В результате я получил тонну флуда и "ответ от профи", с которым все в итоге согласились - фрагмент кода с ценным указанием "если это число растет быстро - утечек много, если медленно - мало или нет вовсе". Код представлял из себя таймер с малым периодом, который создавал объект, брал его хендл, писал в чат и удалял объект, но был один нюанс - создаваемый объект утекал на каждой итерации таймера.
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
Ну с таймером я хз, проверял раз 10 карту, никаких проблем не было, по поводу тренировочного лагеря, если без костылей, тут нужна хэш-таблица, а её я могу юзать только через код
зависит от твоих нужд
например, мне нужно хранить последние 5 секунд позиций нескольких юнитов, т.е. разбитые на участки по 0.25 секунд снимки хп/мп/координат каждого из них
это 5*4 = 20 значений каждого, итого 80
когда мы доходим до секунды 5.25, то надо сдвигать все предыдущие на единичку назад, и вставлять текущие данные на последний слот
это 79*4 операций чтения и 80*4 записей (считаю грубо, всё для примера)
когда это делается в хештбалице, нагрузка значительно выше выходит, чем если делать на массивах (хт перебирает ключи как ассоциативный массив, а обычный массив просто обращается к памяти с указанным адресом, в разы быстрее).
Но чтобы делать эту процедуру на массивах, тебе нужен индексатор этих самых юнитов, чтобы их уникальный ключ не превышал лимит массива. Это дополнительный код, который тебе нужно реализовать с нуля. Но после реализации система становится быстрее.
Была она до этого медленной? да. Влияло ли это на игру? Нет, это 100-200 микросекунд.
Опять же, когда у тебя есть пре-процессор типа vJASS + сниппеты типа Table , которые имитируют массив самостоятельно, они снимают с тебя часть обязанностей. Но из-за того, что они созданы для ОБЩЕГО случая, они все равно не дадут того выигрыша в скорости, который можешь ожидать.
Используй то, что тебе удобнее, и оптимизируй только когда это реально влияет на игру. habr.com/ru/post/550926
И не забывай, что дота стала популярной еще во времена, когда была написана почти целиком на ГУИ и нихера в ней не пахло даже оптимизацией.
А во, нашёл - атвор нафига пихать юнитов за границу обзора? От того и вылетает, убери всех юнитов с краёв карты, ваще чтобы даже близко не было. Так же увеличь границы карты, чтобы всё влезло.
По-моему дело в юнитах красного игрока. Удалив этот отряд орков с огром все ок работает. Перемещение не помогает.
и эта вещь адекватно работает, я тоже частенько забываю какие-то фишки, и в поиске Xgm их просто не возможно найти, вбиваем "свой вопрос" + xgm в самом гугле и найти можно практически что угодно
Если модель анимирована посмотри наличие Origin Ref. Полагаю что именно эта точка крепления используется для паутины могильщика. Для воздушных юнитов - Chest Ref. Создаются легко (но по-моему не во всех версиях в mdlvis)
В любом случае Ctrl+C(V) должен сработать - затем переименовать
Вот-вот (через 5 дней) официально выйдет Рефордж, где это может быть поправлено. Имейте толику терпения, чтобы не делать всё под сырую версию.
близзард это не поправит. Так как зачем? Люди будут делать для рефорджа фуллХД модели где уже по новой схеме будут делать открывание рта. А в классике рот открывается.
Впринципе текстуры не нужны, тут дело в костях модельки и анимации ходьбы, так как ноги вылетают из под платья, да и само оно шевелиться топорно, но как нормально привязать платье я не знаю
Что ж, информация по ссылке оказалась исчерпывающей. Резюмируя, оставлю здесь некоторые пояснения. Параметр metaKey даёт возможность отлавливать события нажатия комбинаций клавиш CTRL+Q, ALT+F6, SHIFT+5 и т.п. Параметр принимает код комбо-клавиши, ими могут быть: SHIFT (1), CTRL (2), ALT (4), WIN (8); а так же их суммы: SHIFT+CTRL (3), SHIFT+ALT (5), SHIFT+CTRL+ALT (7) и так далее. Если комбо-клавиша не нужна, то в параметр нужно передать 0.
сорян за некропост, но дам ответ на данный вопрос, т.к. появились нужные знания
эта функция утечна на 1.26, а точнее сам локальный звук, поэтому лучше юзать глобалки заготовленные и ресайкл систему, но там настолько ущербная утечка, что её можно и проигнорить в принципе
Там и защиты то никакой нету, деоптимизатором прошёлся да и все, код редактируешь одтельно и вставляешь в уже подготовленную карту.
Вот опен карта, там все изи...
Ну старый добрый JNGP + мемхак, самое то, можно сделать все что хотелось без особых проблем и 100% рабочий и точный детект типа урона и атаки, возможность плодить свои собственные баффы\дебаффы как у близзардов, с сайленсами, стунами, и так далее. Сделать нормально скиллы с псевдоконтролем, как в д2, чтобы у юнита ни скрывалась ни панель приказов, ни затемнялись абилки а просто игнорировались приказы, до момента снятия дизейбла-псевдоконтроля.
Ты же понимаешь что под это описание подходит почти каждая ORPG прошлого? Как вариант могу предложить SOLs rpg, Помню ещё одну там ещё лошадей покупать можно было и там и правда город посередине но тоже забыл название. Описывай более особенные вещи или ищи сам вот тут www.epicwar.com/maps/search/?n=orpg&go=1
Увы но нет... Главная особенность той карты что все герои открываются по мере накопления очков за игру на карте, они не открыты сразу и не походу первой катки открываются а лишь с накоплением общих баллов. Я весь мозг сломал уже, в попытках вспомнить. Эх...
Таймер кончается, все герои которые не находятся на арене - телепортируются на неё. В это же время в области создаётся нужное количество мобов и мегамоб(босс).
Окончание раунда, точно ещё не разобрался
Ну как же, сами вы ниче делать не хотите, зато попрошайничать, это для вас святое.
Нанимайте на сайте читеров тех кто вам чит версию запилит, у нас за вас никто ломать и читить карту не будет.
Порча это особый тип земли, который распространяется поверх обычной (заменяя её).
И поэтому в игре тайлы порчи часто могут занимать ещё и соседние участки.
Оптимальный вариант уйти от этой механики - заменить стандартный тайл порчей (текстуру подменить)... т.е. вместо "травы" будет текстура "порчи" (так можно сразу 2-3 порчи в одну карту добавить).
мб отслеживать приказы, какие приказы будут у работника по 100% хп здания?
Или дамиком построить здание, и отказатся строить, у всех игроков - работники альянса (иначе это не пашет) при ремонте здания союзника, если больше никтот не чинит, здание делать за того кто чинит, если бросил чинить (работник отдал любой другой приказ или умер) вернуть в нейтрала, ну и так далее.
» WarCraft 3 / Приказ юнита не срабатывает
» WarCraft 3 / Проблема с blp.
» WarCraft 3 / Иконка для юнита
» WarCraft 3 / Перемещение юнита в случайную точку
» WarCraft 3 / Замена тайлсета
» WarCraft 3 / Символ переноса строки
» WarCraft 3 / Не работает нативка GetUnitGoldCost
» Администрация XGM / Избранный комментарий
» WarCraft 3 / Тип переменной
» WarCraft 3 / Фрейм атаки
» WarCraft 3 / Проблема в ИИ
» WarCraft 3 / Импорт модели
» WarCraft 3 / GUI перебор юнитов
» WarCraft 3 / Таймер
» WarCraft 3 / Очистка экрана от текста
» WarCraft 3 / Крашит карту.
» WarCraft 3 / Лом модельки.
» Администрация XGM / Поиск вопросов
» WarCraft 3 / Кости модельки
» WarCraft 3 / Функция как параметр
» WarCraft 3 / Язык WE
» WarCraft 3 / Помогите найти игру
» WarCraft 3 / Жизнь на Арене
» WarCraft 3 / Почему?